定義:
主成分分析(PCA)是一種線性降維技術,找到數據中的主要特徵或主成分,並將數據投影到這些主成分上,從而實現降維
工作原理:
計算協方差矩陣:首先,將數據進行標準化,然後計算其特徵的協方差矩陣
求解特徵向量和特徵值:通過對協方差矩陣進行特徵值分解或奇異值分解,獲得特徵向量和相應的特徵值
選擇主成分:根據特徵值的大小,選擇前k個主成分,這些主成分將包含大部分數據的變異性
投影:將數據投影到所選的主成分上,從而實現降維
應用:
降維:減少特徵數量,同時保留數據的主要信息。
壓縮:將高維數據轉換為低維表示,以節省計算資源和存儲空間。
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 載入鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target
# 初始化 PCA 模型,選擇想要保留的主成分數量
pca = PCA(n_components=2)
# 進行 PCA 降維
X_pca = pca.fit_transform(X)
# 繪製降維後的數據
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('第一主成分')
plt.ylabel('第二主成分')
plt.title('PCA降維後的鳶尾花數據集')
plt.colorbar(label='鳶尾花類別')
plt.show()
定義:
奇異值分解(SVD)是一種線性代數的技術,它將一個矩陣分解為三個矩陣的乘積,包括一個左奇異向量矩陣、一個對角奇異值矩陣和一個右奇異向量矩陣。
工作原理:
給定一個矩陣A,其SVD分解為:
A=UΣV^T
其中:
U是一個正交矩陣,包含了A的左奇異向量
Σ是一個對角矩陣,包含了A的奇異值
V^T是另一個正交矩陣,包含了A的右奇異向量
應用:
奇異值分解在矩陣的壓縮和重建中有廣泛的應用,也被用於特徵提取等
from sklearn.datasets import load_iris
from sklearn.decomposition import TruncatedSVD
import matplotlib.pyplot as plt
# 載入鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target
# 初始化 TruncatedSVD 模型,選擇想要保留的主成分數量
svd = TruncatedSVD(n_components=2)
# 進行 SVD 降維
X_svd = svd.fit_transform(X)
# 繪製降維後的數據
plt.figure(figsize=(8, 6))
plt.scatter(X_svd[:, 0], X_svd[:, 1], c=y, cmap='viridis')
plt.xlabel('第一奇異值')
plt.ylabel('第二奇異值')
plt.title('SVD降維後的鳶尾花數據集')
plt.colorbar(label='鳶尾花類別')
plt.show()```